Trait (programmation)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
top
Un trait est une sous-classe abstraite, un modèle conceptuel pour structurer des programmes orientés objets.
C'est un ensemble de mΓ©thodes concrΓ¨tes ou fonctions, pouvant Γͺtre ajoutΓ© Γ une classe pour Γ©tendre ses fonctionnalitΓ©s.
Quand un langage de programmation supporte les traits, il permet la rΓ©solution explicite des conflits qui apparaissent quand une classe utilise deux traits qui ont des mΓ©thodes qui portent le mΓͺme nom (contrairement aux mixinscite-ref-1[1]).
Les traits ne sont pas des types abstraits car ils ne capturent pas l'essence de l'objet mais celle de ses propriΓ©tΓ©s et mΓ©thodescite-ref-2[2]cite-ref-3[3].
Contents
β’ ImplΓ©mentations
β’ Exemple
β’ Voir aussi
β’ Liens externes
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ImplΓ©mentations
β’ Java inclut cette fonctionnalitΓ© depuis sa version 8 sortie en mars 2014 introduisant la fonctionnalitΓ© des mΓ©thodes par dΓ©faut.
β’ Les traits sont proposΓ©s pour inclusion dans Smalltalk.
Exemple
L'exemple d'utilisation suivant en PHP montre une meilleure granularitΓ© des traits en comparaison d'un hΓ©ritage multiple :
trait Hello {
public function sayHello() {
echo 'Hello ';
}
}
trait World {
public function sayWorld() {
echo ' World';
}
}
class MyHelloWorld {
use Hello, World;
public function sayExclamationMark() {
echo '!';
}
}
$o = new MyHelloWorld();
$o->sayHello();
$o->sayWorld();
$o->sayExclamationMark();
Notes et rΓ©fΓ©rences
cite-note-11. β guerraoui2003rachid-guerraoui2003(en) Rachid Guerraoui, ECOOP '99 : Object-Oriented Programming : 13th European Conference Lisbon, Portugal, June 14-18, 1999 Proceedings, Springer, 31 juillet 2003 (lire en ligne)
cite-note-22. β s-stone1986harold-s-stone1986(en) Harold S. Stone, 1986 proceedings, IEEE Computer Society Press, coll. Β« Association for Computing Machinery, IEEE Computer Society Β», 1986 (lire en ligne)
cite-note-33. β gutmann2007peter-gutmann2007(en) Peter Gutmann, Cryptographic Security Architecture : Design and Verification, Springer Science & Business Media, 8 mai 2007 (lire en ligne)
cite-note-55. β (en) Β« Traits Β» : Β« traits are used to define object types by specifying the signature of the supported methods. Β»
cite-note-66. β (en) Β« Traits Β» : Β« As of PHP 5.4.0, PHP implements a method of code reuse called Traits. Β»
cite-note-77. β (en) Β« Traits Β» : Β« A trait is a language feature that tells the Rust compiler about functionality a type must provide. Β»
cite-note-88. β (en) Β« fortran_proposals/20-109.txt at master Β· j3-fortran/fortran_proposals Β», sur GitHub (consultΓ© le 18 septembre 2021)
Voir aussi
Articles connexes
Liens externes
β’ (en) Traits - Composable Units of Behavior sur Software Composition Group (universitΓ© de Berne)
β’ (en) Proposition d'implΓ©mentation en PHP
β’ Portail de la programmation informatique